package com.lanou3g.code0417.thread1;

/**
 * Created by dllo on 18/4/17.
 */
public class Test02 {
    public static void main(String[] args) {
     //开启线程 （方式一extends的变形1）
        // 匿名对象：直接new出对象，而不给这个对象变量名，在new完之后，可以直接调用对象的方法
         // 并且只有这一次调用方法的机会（ 无法操纵线程stop ）
        new ThreadA().start();

        //(方式一的变形2)
        //＝ 号右侧的叫做匿名内部类，是Thread类的一个子类
//        //匿名指的是没有类名（所以没有自己的构造方法，所以当需要使用全局变量或属性时，都不能用匿名内部类），在构造方法的小括号后和分号前加上大括号
         // 那么｛｝就代表是一个类，如下代表创建了一个没有类名的Thread类的子类，同样可以覆写父类（Thread）中的方法
        Thread a = new Thread(){
            @Override
            public void run() {
                super.run();
                for (int i = 0; i < 10; i++) {
                    System.out.println(i);
                }
            }
            // 内部可以写任意方法
            public void fun(){ //a 调用不到内部的方法，只能调用父类有的方法

            }
        };


        // 线程运行
        a.start();

        //创建 运行 死亡 是个空线程
        new Thread().start();

        //Runnable 变形
        new Thread(new Runnable() {  //匿名内部类 (java 8 提供入表达式)
                @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    System.out.println(i);
                }
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("s");
            }
        }).start();

    }
}
